package com.typ.blog.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.typ.blog.entity.Article;
import com.typ.blog.entity.Classification;
import com.typ.blog.mapper.ArticleMapper;
import com.typ.blog.service.ArticleService;
import com.typ.blog.utils.UUIDUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 路径：com.typ.blog.service.impl.ArticleServiceImpl.java
 * 类名：ArticleServiceImpl.java
 * 功能：文章
 * 备注：
 * 创建人：typ
 * 创建时间：2019/10/27 18:00
 * 修改人：
 * 修改备注：
 * 修改时间：
 */
@Slf4j
@Service
public class ArticleServiceImpl implements ArticleService {

    @Autowired
    private ArticleMapper articleMapper;

    /**
     * 方法名：list
     * 功能：列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:59
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public PageInfo<Article> list(Integer pageNum, Integer pageSize, String search) {
        PageHelper.startPage(pageNum, pageSize);
        List<Article> list = articleMapper.list(search);
        return new PageInfo<>(list);
    }

    /**
     * 方法名：qryById
     * 功能：根据id获取数据
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:59
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Article qryById(String id) {
        return articleMapper.qryById(id);
    }

    /**
     * 方法名：save
     * 功能：添加或修改
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:59
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Integer save(Article article) {
        // 判断文章是否有图片
        String img = "images/articles/blog.jpg";
        if (article.getHtmlContent().contains("<img src=")) {
            String image = article.getHtmlContent();
            img = image.substring(image.lastIndexOf("images/articles/"), image.lastIndexOf("\" alt=\"\">"));
        }
        article.setImgUrl(img);
        article.setUpdateDate(LocalDateTime.now().toString());
        if (Objects.isNull(article.getArticleId())||article.getArticleId().length()==0) {
            article.setArticleId(UUIDUtils.getUUID());
            article.setCreateDate(LocalDateTime.now().toString());
            return articleMapper.insert(article);
        } else {
            return articleMapper.update(article);
        }
    }

    /**
     * 方法名：isEnable
     * 功能：是否启用
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Integer isEnable(String articleId, Integer enable) {
        if(Objects.equals(0,enable)){
            enable = 1;
        } else {
            enable = 0;
        }
        return articleMapper.isEnable(articleId, enable);
    }

    /**
     * 方法名：del
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/11/21 20:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @Override
    public Integer del(String id) {
        return articleMapper.del(id);
    }

}
